import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getCurrentUser } from '@/api/user.ts'
import { message } from 'ant-design-vue'

//使用defineStore方法定义一个id名是loginUser的store
//defineStore方法接收两个参数,第一个参数是id名,第二个参数是一个函数,函数返回一个对象,对象中有响应式变量和方法
//defineStore返回一个函数,调用这个函数才能创建对应的store实例
export const useLoginUserStore = defineStore('loginUser', () => {
  //定义响应式变量
  const loginUser = ref<any>({})

  //远程获取用户信息
  async function fetchLoginUser() {
    //从后台接口中获取当前用户信息
    const res = await getCurrentUser()
    if (res.data.code === 1 && res.data.data) {
      //将获取到的用户信息赋值给响应式变量loginUser
      setLoginUser(res.data.data)
    } else {
      console.log('没有获取到用户信息')
    }
  }

  //单独设置用户信息
  function setLoginUser(newLoginUser: any) {
    loginUser.value = newLoginUser
  }

  //return返回的函数和变量,才能被pinia暴露给别的页面使用,否则就用不了
  return { loginUser, fetchLoginUser, setLoginUser }
})
